<template>
  <div class="container">
      <div style="display: flex">
        <el-upload
          ref="upload"
          action="action"
          accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
          :show-file-list="false"
          :http-request="handlehttpRequest"
          :on-change="onUploadChange"
        >
          <el-button
            size="small"
            type="primary"
            icon="el-icon-upload"
            >导入Excel</el-button
          >
        </el-upload>
        <!-- <el-button
          style="margin-left: 20px"
          size="small"
          icon="el-icon-download"
          @click="handleDownload"
          >导出Excel</el-button
        > -->
        <el-button
          style="margin-left: 20px"
          size="small"
          icon="el-icon-delete"
          @click="handleClear"
          >清空数据</el-button
        >
        <el-button
          style="margin-left: 20px"
          size="small"
          type="primary"
          @click="handleSave"
          >保存数据</el-button
        >
      </div>
      <div>数据库现有 <font style="color: red;">{{allprojectkno.length}}</font> 个代购代建项目</div>
      <div>数据库现有 <font style="color: red;">{{databaselist.length}}</font> 份代购代建下家合同</div>
      <div>发现了 <font style="color: red;">{{importcount}}</font> 条数据，其中 <font style="color: red;">{{allyouyongtiaoshu}}</font> 条匹到移动项目编号，<font style="color: red;">{{allwuyongtiaoshu}}</font> 条匹配不到数据库里的移动项目编号。点击“保存数据”按钮保存到数据库</div>
      <div></div>
      <!-- <el-table
        :data="list"
        border
        style="width: 100%; margin-top: 20px; overflow:auto; height: 500px;"
      >
        <template v-if="list && list.length > 0">
          <el-table-column
            v-for="item in Object.keys(list[0] || {})"
            :prop="item"
            :label="item"
            :key="item"
          >
          </el-table-column>
        </template>
      </el-table> -->
      <!-- <pre>{{allyouyongtiao}}</pre> -->
    </div>
</template>

<script>
import { readExcelToJson, saveJsonToExcel } from './utils2.js'
// import { tableData } from './data.js'

export default {
  data() {
    return {
      // 导入的文件
      file: null,
      // 导入的数据
      list: [],
      // 数据库读取的数据对象
      databaselist: [],
      // 数据库读取类目对比数据
      databaseprojectkindnamelist: [],
      // 所有移动项目编号
      allprojectkno: [],
      // 导入多少条记录
      importcount: 0,
      // 有用的数据条数
      allyouyongtiaoshu: 0,
      // 有用的数据
      allyouyongtiao: 0,
      // 无用的数据条数
      allwuyongtiaoshu: 0
      // newarr:[
      //   {
      //     projectNo: ''
      //   }
      // ]
    }
  },
  created() {
    // 页面访问权限判断
    // this.menuright()
    this.getAllContractsList()
    // this.getProjectKindNameList()
    this.getAllProjectNo()
    // this.list = tableData
  },
  methods: {
    async getAllContractsList() {
      // console.log('程序运行到这里了')
      // 获取合同列表
      const { data: res } = await this.$http.get('contractslist')
      if (res.meta.status !== 200) {
        return this.$message.error('获取所有合同数据列表失败！')
      }
      this.databaselist = res.data
      console.log('合同数量', this.databaselist.length)
    },
    async getProjectKindNameList() {
      // 获取合同类目名称对比列表
      const { data: res } = await this.$http.get('contractskindnamelist')
      if (res.meta.status !== 200) {
        return this.$message.error('获取合同类目名称对比列表失败！')
      }
      // console.log('合同分类命名', res.data)
      this.databaseprojectkindnamelist = res.data
      // res.data.forEach(item => {
      //   console.log(item)
      // })
      // setTimeout(()=>{
      //   //这里就写你要执行的语句即可，先让数据库的数据加载进去数组中你在从数组中取值就好了
      //   console.log('this.databaseprojectkindnamelist', this.databaseprojectkindnamelist)
      // },3000)
      console.log('this.databaseprojectkindnamelist', this.databaseprojectkindnamelist)
    },
    async getAllProjectNo() {
      // -------------将数据库里的项目编号组成一个数组---------------
      const { data: res } = await this.$http.get('mobileprojectno')
      if (res.meta.status !== 200) {
        return this.$message.error('获取合同类目名称对比列表失败！')
      }
      this.allprojectkno = res.data
      console.log('this.allprojectkno', this.allprojectkno.length)
      // ------------------------End---------------------------------
    },
    handlehttpRequest() {},
    // 读取文件为json数据
    onUploadChange(file) {
      // console.log(file)
      // 日期格式转换
      // function formateDate(datetime) {
      //   function addzero(num) {
      //     return (num < 10 ? '0' + num : num)
      //   }
      //   if (datetime.length !== 0) {
      //   // if (datetime !== null) {
      //     // console.log(datetime)
      //     var date = new Date(datetime)
      //     // return date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日'
      //     return date.getFullYear() + '-' + addzero((date.getMonth() + 1)) + '-' + addzero(date.getDate())
      //   } else {
      //     return ''
      //   }
      // }
      this.file = file
      readExcelToJson(file).then((res) => {
        console.log('导入的数据', res)
        this.importcount = res.length
        // ---------将计提表里的项目编号和arr（去重项目编号）对比分出有用的和无用的数据------------
        let allyouyong = []
        let allwuyong = []
        res.forEach(item => {
          // console.log('item.项目编号', item.项目编号)
          if (this.allprojectkno.includes(item.项目编号)) {
            // console.log('找到')
            allyouyong.push(item)
          } else {
            // console.log('没找到')
            allwuyong.push(item)
          }
          // if (arr.find(o => o.项目编号 === item.项目编号)) {
          // }
        })
        // 将所有属性名转成数据库对应的属性名
        let newallyouyong = []
        allyouyong.map(item => {
          // return { shi: item.地区名称, qu: item.县市名称 }
          // item.收入确认时间 = formateDate(item.收入确认时间)
          newallyouyong.push({
            Shi: item['地区名称'],
            Qu: item['县市名称'],
            BusinessName: item['业务名称'],
            ProjectNo: item['项目编号'].trim(),
            ProjectName: item['项目名称'],
            CustomerName: item['集团名称'],
            ContractStartTime: item['合同履约起始时间'],
            ContractEndTime: item['合同履约截止时间'],
            IncomeTime: item['收入确认时间'],
            ContractTotal: item['合同总额'],
            IncomeAmount: item['收入金额'],
            Tax: item['税率'],
            AcceptTime: item['验收时点'],
            StartAllocationTime: item['开始分摊时间'],
            EndAllocationTime: item['截止分摊时间'],
            MonthAllocationIncome: item['本月分摊收入'],
            CumulativeAllocationIncome: item['累计分摊收入'],
            NotMonthAllocationIncome: item['本月未分摊收入'],
            MonthIncomeAmount: item['本月应收金额'],
            MonthActualIncomeAmount: item['本月实收金额'],
            CumulativeIncomeAmount: item['累计应收金额'],
            CumulativeActualIncomeAmount: item['累计实收金额'],
            MonthArrears: item['本月欠费'],
            LossAmount: item['已报损金额'],
            CollectAmount: item['预收资金'],
            EarliestArrearsMonth: item['最早欠费月份'],
            FinancialAccount: item['财务科目'],
            Industry: item['行业'],
            ProductKind: item['产品段']
          })
        })
        // allyouyong.forEach(item => {
        // })
        this.allyouyongtiaoshu = newallyouyong.length
        this.allyouyongtiao = newallyouyong
        this.allwuyongtiaoshu = allwuyong.length
        console.log('allyouyong', allyouyong)
        console.log('newallyouyong', newallyouyong)
        console.log('allwuyong', allwuyong.length)
        // ------------------------End---------------------------------
        // ---------将数据库的合同数据的项目编号组成一个数组（如果没有合同数据就无法导入所以这个合同编号数据有局限性不是全部数据里的项目编号）------------
        let newarr = []
        this.databaselist.forEach(item => {
          newarr.push(item.projectNo)
        })
        // console.log('没有去重的数组', newarr)
        // ------------------------End---------------------------------
        // ---------将项目编号数组去重------------
        var set = new Set(newarr)
        // 将set转换为数组
        let [...arr] = set
        console.log('去重后的数组的长度', arr.length)
        // ------------------------End---------------------------------
        // ---------将计提表里的项目编号和arr（去重项目编号）对比分出有用的和无用的数据------------
        let youyong = []
        let wuyong = []
        res.forEach(item => {
          // console.log('item.项目编号', item.项目编号)
          if (arr.includes(item.项目编号)) {
            // console.log('找到')
            youyong.push(item)
          } else {
            // console.log('没找到')
            wuyong.push(item)
          }
          // if (arr.find(o => o.项目编号 === item.项目编号)) {
          // }
        })
        console.log('youyong', youyong.length)
        // console.log('wuyong', wuyong.length)
        // ------------------------End---------------------------------
        // 将有用的数据的业务名称项改成相对应的铁通的项目名称项，比如集成，设备，维护，施工，租赁，软件开发
        youyong.forEach(item => {
          // console.log('item.业务名称', item.业务名称)
          let obj = this.databaseprojectkindnamelist.find(o => o.businessName === item.业务名称)
          item.业务名称 = obj.simpleName
          // console.log('obj.simpleName', obj.simpleName)
        })
        console.log('youyong', youyong.length)
        // -------------将有用的数据导入到数据库里---------------

        // ------------------------End---------------------------------
        // -------------尝试将数据一一对应---------------
        let yiyiduiying = []
        // youyong.forEach(item => {

        // })
        this.databaselist.forEach(item => {
          if (item.contractKind === '软件开发') {
            let oneone = youyong.find(o => o.业务名称 === '集成' && o.项目编号 === item.projectNo)
            if (oneone !== undefined) {
              // youyong = youyong.filter(item => item === oneone)
              yiyiduiying.push(oneone)
            }
            // console.log('one_one', oneone)
          } else {
            let oneone2 = youyong.find(o => o.业务名称 === item.contractKind && o.项目编号 === item.projectNo)
            // console.log('one_one2', oneone2)
            if (oneone2 !== undefined) {
              // youyong = youyong.filter(item => item === oneone2)
              yiyiduiying.push(oneone2)
            }
          }
        })
        console.log('yiyiduiying', yiyiduiying.length)
        let duibushang = youyong.filter(item => !yiyiduiying.some(o => o.业务名称 === item.业务名称 && o.项目编号 === item.项目编号))
        console.log('duibushang', duibushang)
        // ------------------------End---------------------------------
        // let duibushang = []
        // youyong.forEach((item, index, arr) => {
        //   // if (yiyiduiying.find(o => o.业务名称 === item.业务名称 && o.项目编号 === item.项目编号)) {
        //   //   youyong
        //   // }
        //   let zhaodao = yiyiduiying.find(o => o.业务名称 === item.业务名称 && o.项目编号 === item.项目编号)
        // })
        // this.databaselist.forEach(item => {
        //   if (item.contractKind == '软件开发') {
        //     // if(this.databaseprojectkindnamelist.find(o => o.simpleName === '集成')){
        //     //   console.log('知道科目名称')
        //     // }
        //     let obj = this.databaseprojectkindnamelist.find(o => o.simpleName === '集成')
        //     // console.log(obj.businessName)
        //     if (obj.businessName !== null) {
        //       console.log(obj.businessName)
        //     } else {
        //       console.log('没找到')
        //     }
        //   } else {
        //     // if(this.databaseprojectkindnamelist.find(o => o.simpleName === item.contractKind)){
        //     // // console.log('知道科目名称')
        //     // }
        //     let obj = this.databaseprojectkindnamelist.find(o => o.simpleName === item.contractKind)
        //     // console.log(obj.businessName)
        //     if (obj.businessName !== null) {
        //       console.log(obj.businessName)
        //     } else {
        //       console.log('没找到')
        //     }
        //   }
        // })
        // contractKind
        // arr.forEach(shu => {
        //   // console.log(shu)
        //   // if (res.find(o => o.项目编号 === shu)) {
        //   //   // console.log(shu)
        //   // }
        //   // res.forEach(item => {
        //   //   // console.log(item)
        //   //   if (item.项目编号 === shu) {
        //   //     youyong.push(item)
        //   //   } else {
        //   //     wuyong.push(item)
        //   //   }
        //   // })
        //   // item.projectNo
        //   // res.map(ht => {
        //   // })
        // })
        // console.log(youyong, youyong.length)
        // console.log(wuyong, wuyong.length)
        // this.databaselist.forEach(item => {
        //   if (this.newarr.find(o => o.projectNo === item.projectNo)) {
        //   } else {
        //     this.newarr.push(item.projectNo)
        //   }
        //   // item.projectNo
        //   // res.map(ht => {
        //   // })
        // })
        // console.log('this.newarr', this.newarr)
        // console.log('合计有多少条projectNo', this.newarr.length)
        // this.list = res
      })
    },
    // 保存导入的数据
    async handleSave() {
      console.log(this.allyouyongtiao)
      const { data: res } = await this.$http.post('addjitis', this.allyouyongtiao)
      if (res.meta.status !== 200) return this.$message.error('添加失败！')
      console.log(res)
      this.$message.success('导入移动计提表成功！')
    },
    handleDownload() {
      saveJsonToExcel(this.list, 'data.xlsx')
    },
    handleClear() {
      this.list = null
    }
    // dateFormat: function (row, column) {
    //   var date = row[column.property]
    //   if (date === undefined) {
    //     return ''
    //   }
    //   return moment(date).format('YYYY-MM-DD')
    // }
  }
}
</script>

<style>
.container {
  width: 96%;
  /* height: 400px; */
  margin: 0 auto;
  padding: 20px;
  background: #fff;

}
</style>
